home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
byt85jan.lbr
/
SWEEP.BQS
/
SWEEP.BAS
Wrap
BASIC Source File
|
1985-09-15
|
3KB
|
100 lines
10 ' AUDIO FREQUENCY ANALYZER [SWEEP]
20 ' ---------------------------------
30 ' This system will sweep through a frequency range and
40 ' display the responce to each frequency.
50 '
60 CLS:OUT 1923,137:DIM FL(14),CC(14),SL(14),FCL(14)
70 PRINT:PRINT" AUDIO FREQUENCY ANALYZER"
80 '
90 ' Output the pulse to start the ADC conversion.
100 ' Also, park the VCO at the lowest frequency.
110 '
120 OUT 1921,128:OUT 1921,31:OUT 1920,0
130 '
140 ' READ THE CALIBRATION DATA FROM THE DATA STATEMENTS.
150 '
160 FOR I= 0 TO 14
170 READ FL(I),CC(I),SL(I),FCL(I)
180 NEXT
190 KEY OFF:IX=5
200 '
210 ' Input the lower and upper bounds of the range to sweep.
220 '
230 LOCATE 10,15:INPUT "FREQ LOW = ";FL
240 LOCATE 12,15:INPUT "FREQ HIGH=";FH
250 FD=(FH-FL)/72
260 CLS
270 IF (FD>0) AND (FH<30000) AND (FL>8) THEN GOTO 330
280 CLS:LOCATE 3,30:PRINT"BAD FREQUENCY LIMITS"
290 GOTO 230
300 '
310 ' Print the axis on the screen.
320 '
330 FOR I = 1 TO 22:PRINT " -":NEXT:PRINT " ";
340 FOR I = FL+FD*3 TO FH STEP FD*6:PRINT USING " #####";I;:NEXT
350 FOR F = FL TO FH STEP FD
360 '
370 ' CONVERT THE FREQUENCY [F] FROM HERTZ TO CAPACITOR CODE AND
380 ' FINE FREQUENCY CODE.
390 '
400 I=1
410 IF F>FL(I) THEN I=I+1:GOTO 410
420 I=I-1
430 DF=INT(.5+(F-FL(I))*SL(I)+FCL(I))
440 '
450 ' If an incorrect code appears, then abort the run and start over.
460 '
470 IF DF<0 THEN OUT 1921,0:OUT 1920,255:GOTO 230
480 OUT 1920,DF :OUT 1921,CC(I):II=0
490 '
500 ' Delay to let the stereo settle to it's responce.
510 '
520 FOR T = 1 TO 50:I=I+1:NEXT
530 IF F=FL THEN FOR I = 1 TO 300: T=T+3: NEXT
540 '
550 ' Take eight samples and average.
560 '
570 FOR I=1 TO 8
580 II=II+INP(1922)
590 NEXT
600 II=II/8
610 '
620 ' Convert the data to a range of 1 to 22 for the screen.
630 '
640 I=INT(22-(255-II)/4)
650 X$="+"
660 '
670 ' Check for out-of-range conditions
680 '
690 IF I<1 THEN I=1 :X$="^"
700 IF I>22 THEN I=22 :X$="#"
710 '
720 ' Place the mark on the screen.
730 '
740 LOCATE I,IX: PRINT X$;
750 IX=IX+1
760 NEXT
770 OUT 1921,31:OUT 1920,0
780 LOCATE 23,1:END
790 ' --------------------
800 ' - CALIBRATION DATA -
810 ' --------------------
820 ' FREQ LOW, CAP CODE, SLOPE, FINE FREQ LOW
830 '
840 DATA 8, 31, 9.1667 , 0
850 DATA 21, 30, 6.7857 , 70
860 DATA 36, 19, 2.5294 , 31
870 DATA 71, 7, 2.1111 , 90
880 DATA 126, 22, 0.6081 , 15
890 DATA 201, 22, 0.5960 , 61
900 DATA 301, 16, 0.4699 , 78
910 DATA 553, 6, 0.1521 , 23
920 DATA 1005, 2, 0.1184 , 58
930 DATA 2009, 4, 0.04332, 26
940 DATA 4001, 4, 0.04814, 112
950 DATA 6670, 0, 0.01490, 0
960 DATA 7785, 0, 0.01001, 16
970 DATA 14280, 0, 0.01004, 81
980 DATA 30000, 0, 0.00000, 0
6670, 0, 0.01490, 0